﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DHISInteroperability.Timeframe
{
    public enum PeriodFormat
    {
        /// <summary>
        /// Interval:       Day
        /// Format:         yyyyMMdd
        /// Example:        20040315
        /// Description:    March 15 2004
        /// </summary>
        [StringValue(PeriodFormatText.DAILY)]
        DAILY = 1,

        /// <summary>
        /// Interval:       Week
        /// Format:         yyyyWn
        /// Example:        2004W10
        /// Description:    Week 10 2004
        /// </summary>
        [StringValue(PeriodFormatText.WEEKLY)]
        WEEKLY = 2,

        /// <summary>
        /// Interval:       Month
        /// Format:         yyyyMM
        /// Example:        200403
        /// Description:    March 2004
        /// </summary>
        [StringValue(PeriodFormatText.MONTHLY)]
        MONTHLY = 3,

        /// <summary>
        /// Interval:       Quarter
        /// Format:         yyyyQn
        /// Example:        2004Q1
        /// Description:    January-March 2004
        /// </summary>
        [StringValue(PeriodFormatText.QUARTERLY)]
        QUARTERLY = 4,

        /// <summary>
        /// Interval:       Six-month
        /// Format:         yyyySn
        /// Example:        2004S1
        /// Description:    January-June 2004
        /// </summary>
        [StringValue(PeriodFormatText.SIX_MONTHLY)]
        SIX_MONTHLY = 5,

        /// <summary>
        /// Interval:       Six-month April
        /// Format:         yyyyAprilSn
        /// Example:        2004AprilS1
        /// Description:    April-September 2004
        /// </summary>
        [StringValue(PeriodFormatText.SIX_MONTHLY_APRIL)]
        SIX_MONTHLY_APRIL = 6,

        /// <summary>
        /// Interval:       Year
        /// Format:         yyyy
        /// Example:        2004
        /// Description:    2004
        /// </summary>
        [StringValue(PeriodFormatText.YEARLY)]
        YEARLY = 7,

        /// <summary>
        /// Interval:       Financial Year April
        /// Format:         yyyyApril
        /// Example:        2004April
        /// Description:    Apr 2004-Mar 2005
        /// </summary>
        [StringValue(PeriodFormatText.FINANCIAL_APRIL)]
        FINANCIAL_APRIL = 8,

        /// <summary>
        /// Interval:       Financial Year July
        /// Format:         yyyyJuly
        /// Example:        2004July
        /// Description:    July 2004-June 2005
        /// </summary>
        [StringValue(PeriodFormatText.FINANCIAL_JULY)]
        FINANCIAL_JULY = 9,

        /// <summary>
        /// Interval:       Financial Year Oct
        /// Format:         yyyyOct
        /// Example:        2004Oct
        /// Description:    Oct 2004-Sep 2005
        /// </summary>
        [StringValue(PeriodFormatText.FINANCIAL_OCT)]
        FINANCIAL_OCT = 10
    }
}
